<?php
// $arr = array(
//     'id'=>1,
//     'name'=>'sssafds'
// );
// $data ="输出json数据";
// $newData = iconv('UTF-8', 'GBK', $data);//将utf-8的数据转化为gbk
// echo $newData;
// echo json_encode($newData);


class Response {
    
    const JSON = "json";
    /**
     * 按综合方式输出通信数据
     * @param integer $code
     * @param string  $message
     * @param array $data
     * @param String $type 数据类型
     * hanyao.huang
     * 2016年8月8日
     * return_type
     */
    public static function show($code,$message ='',$data = array(),$type =self::JSON){
        if (!is_numeric($code)){
            return '';
        }
        
        $type = isset($_GET['format'])?$_GET['format']:self::JSON;//传一个类型回来判断要xml还是json数据
        //isset值是否存在
        
        $result = array(
            'code'=>$code,
            'message' => $message,
            'data' => $data
        );
        if ($type == 'json'){
            self::json($code,$message,$data);
            exit;
        }elseif ($type == 'array'){//测试数据
            var_dump($result);
        }elseif ($type == 'xml'){
            self::xmlEncode($code, $message,$data);
            exit;
        }else{
            //其他的业务逻辑
        }
    }
    
    
    
    
    /**
     * 按json方式输出通信数据
     * @param integer $code
     * @param string  $message
     * @param array $data
     * hanyao.huang
     * 2016年8月8日
     * return_type
     */
    public static function  json($code,$message = '',$data = array()) {
        if (!is_numeric($code)){
            return '';
        }
        
        $result = array(
            'code' =>$code,
            'message' => $message,
            'data' => $data
        );
        echo json_encode($result);
        exit;
    }
/*     
   
    public static function xml() {
        header("Content-type:text/xml");//转化为xml节点
        $xml = "<?xml version='1.0' encoding = 'UTF-8' ?>";
        $xml .= "<root>";
        $xml .= "<code>200</code>";
        $xml .= "<message>数据返回成功</message>";
        $xml .= "<data>";
        $xml .= "<id>1</id>";
        $xml .= "<name>singwa</name>";
        $xml .= "</data>";
        $xml .= "</root>";
        
        echo("$xml");
    }
     */
    
    /**
     * 按xml方式输出通信数据
     * @param integer $code
     * @param string  $message
     * @param array $data
     * hanyao.huang
     * 2016年8月8日
     * return_type
     */
    public static function xmlEncode($code,$message,$data = array()) {
        if (!is_numeric($code)) {
            return '';
        }
        
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        ); 
        
        header("Content-type:text/xml");
        $xml = "<?xml version='1.0' encoding = 'UTF-8' ?>";
        $xml.= "<root>";
        $xml.= self::xmlToEncode($result);
        $xml.= "</root>";
        echo $xml;
    }
    
    public static function xmlToEncode($data) {
        $xml = $attr ="";
        foreach ($data as $key => $value) {
            if (is_numeric($key)){
                $attr = "id='{$key}'";
                $key = "item";
            }
                
            $xml.="<{$key} {$attr}>";
            //递归调用 解决不是key value的数组
            $xml.= is_array($value)?self::xmlToEncode($value):$value;
            $xml.="</{$key}>";
        };
        
        return $xml;
    }
}